﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Cotizav.PRESENTACION.Maestro
{
    public partial class IUDistrito : Form
    {
        List<CONEXION.PROVINCIA> provincias;
        List<CONEXION.DISTRITO> distritos;
        CtrlProvincia controlador1;
        CtrlDistrito controlador;
        string idProvincia;
        
        public IUDistrito()
        {
            InitializeComponent();
            provincias = new List<CONEXION.PROVINCIA>();
            distritos = new List<CONEXION.DISTRITO>();            
            controlador1 = new CtrlProvincia();
            controlador = new CtrlDistrito();
        }

        private void IUDistrito_Load(object sender, EventArgs e)
        {
            provincias = controlador1.getListProvincia();
            cmbProvincia.DataSource = null;
            cmbProvincia.DataSource = provincias;

            cmbProvincia.DisplayMember = "nombreProvincia";
            cmbProvincia.ValueMember = "idProvincia";

            cmbProvincia.SelectedIndex = -1;
        }

        private void setRowsReadOnly()
        {
            foreach (DataGridViewRow dr in gridDistrito.Rows)
            {
                dr.ReadOnly = true;
            }
        }

        private void btnMostrar_Click(object sender, EventArgs e)
        {
            if (cmbProvincia.SelectedIndex >= 0)
            {
                idProvincia = cmbProvincia.SelectedValue.ToString();

                distritos = controlador.getListDistrito(idProvincia);
                gridDistrito.DataSource = null;
                gridDistrito.DataSource = distritos;
                setRowsReadOnly();

                gbInfoBasica.Enabled = true;
                gbInfoRegistrada.Enabled = true;
            }
        }

        private void cmbProvincia_DropDown(object sender, EventArgs e)
        {
            gbInfoBasica.Enabled = false;
            gbInfoRegistrada.Enabled = false;
        }

        private void cmbProvincia_SelectionChangeCommitted(object sender, EventArgs e)
        {
            btnMostrar.Focus();
        }

        private void btnAgregar_Click(object sender, EventArgs e)
        {
            if (cmbProvincia.SelectedIndex >= 0)
            {
                if (!string.IsNullOrWhiteSpace(txtNombreDistrito.Text))
                {
                    //procedemos a registrar
                    CONEXION.DISTRITO dist = new CONEXION.DISTRITO()
                    {
                        idProvincia = idProvincia,
                        nombreDistrito = txtNombreDistrito.Text,
                        eliminado = 0
                    };

                    DialogResult dr = controlador.registrarDistrito(dist);
                    if (dr == DialogResult.OK)
                    {
                        //actualizamos la lista      
                        distritos = controlador.getListDistrito(idProvincia);
                        gridDistrito.DataSource = null;
                        gridDistrito.DataSource = distritos;

                        setRowsReadOnly();
                    }

                    txtNombreDistrito.ResetText();
                }
            }
            else
            {
                MessageBox.Show("Seleccione la provincia y luego haga click en el botón 'Mostrar'", "Cotizav", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
            }
        }

        private void btnModificar_Click(object sender, EventArgs e)
        {
            if (gridDistrito.SelectedRows.Count > 0)
            {
                btnAgregar.Enabled = false;
                txtNombreDistrito.Enabled = false;

                switch (btnModificar.Text)
                {
                    case "Modificar":
                        int index = gridDistrito.SelectedRows[0].Index;

                        //cambiamos el boton de modificar
                        btnModificar.Text = "Completar";
                        btnModificar.Image = global::Cotizav.Properties.Resources.accept;

                        //mostramos el boton cancelar
                        btnCancelar.Visible = true;

                        //volvemos la celda editable
                        gridDistrito.SelectedRows[0].ReadOnly = false;
                        gridDistrito.SelectedRows[0].Cells[1].Selected = true;
                        gridDistrito.CurrentCell = gridDistrito.SelectedRows[0].Cells[1];
                        gridDistrito.BeginEdit(true);
                        break;
                    case "Completar":
                        int ind = gridDistrito.CurrentRow.Index;
                        if (gridDistrito.Rows[ind].Cells[1].Value != null)
                        {
                            if (MessageBox.Show("¿Confirma actualizar la operación?", "Cotizav", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.OK)
                            {
                                CONEXION.DISTRITO dis = new CONEXION.DISTRITO()
                                {
                                    idProvincia = idProvincia,
                                    idDistrito = gridDistrito.Rows[ind].Cells[0].Value.ToString(),
                                    nombreDistrito = gridDistrito.Rows[ind].Cells[1].Value.ToString(),
                                    eliminado = 0
                                };

                                DialogResult dr = controlador.actualizarDistrito(dis);
                            }
                        }
                        else
                        {
                            MessageBox.Show("La celda se encuentra vacía", "Cotizav", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                        }

                        //actualizamos la lista      
                        distritos = controlador.getListDistrito(idProvincia);
                        gridDistrito.DataSource = null;
                        gridDistrito.DataSource = distritos;

                        setRowsReadOnly();

                        //cambiamos el boton de modificar
                        btnModificar.Text = "Modificar";
                        btnModificar.Image = global::Cotizav.Properties.Resources.contactoedit;

                        //ocultamos  el boton cancelar
                        btnCancelar.Visible = false;

                        //habilitamos el panel superior
                        btnAgregar.Enabled = true;
                        txtNombreDistrito.Enabled = true;

                        break;
                }
            }
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            if (cmbProvincia.SelectedIndex >= 0)
            {
                //actualizamos la lista      
                distritos = controlador.getListDistrito(idProvincia);
                gridDistrito.DataSource = null;
                gridDistrito.DataSource = distritos;

                setRowsReadOnly();

                //cambiamos el boton de modificar
                btnModificar.Text = "Modificar";
                btnModificar.Image = global::Cotizav.Properties.Resources.contactoedit;

                //ocultamos  el boton cancelar
                btnCancelar.Visible = false;

                //habilitamos el panel superior
                btnAgregar.Enabled = true;
                txtNombreDistrito.Enabled = true;
            }
            else
            {
                gbInfoBasica.Enabled = false;
                gbInfoRegistrada.Enabled = false;
            }
        }

        private void btnEliminar_Click(object sender, EventArgs e)
        {
            if (cmbProvincia.SelectedIndex >= 0)
            {
                if (gridDistrito.SelectedRows.Count > 0)
                {
                    if (MessageBox.Show("¿Confirma eliminar el distrito?", "Cotizav", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.OK)
                    {
                        int index = gridDistrito.SelectedRows[0].Index;
                        CONEXION.DISTRITO dis = distritos.ElementAt(index);
                        dis.eliminado = 1;

                        controlador.eliminarDistrito(dis);
                    }

                    //actualizamos la lista      
                    distritos = controlador.getListDistrito(idProvincia);
                    gridDistrito.DataSource = null;
                    gridDistrito.DataSource = distritos;

                    setRowsReadOnly(); 
                }
            }
            else
            {
                MessageBox.Show("Seleccione la provincia y luego haga click en el botón 'Mostrar'", "Cotizav", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);

                gbInfoBasica.Enabled = false;
                gbInfoRegistrada.Enabled = false;
            }
        }

        private void gridDistrito_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
        {
            if (gridDistrito.DataSource != null)
            {
                gridDistrito.Columns["idDistrito"].Visible = false;
                gridDistrito.Columns["nombreDistrito"].HeaderText = "Distrito";
                gridDistrito.Columns["nombreDistrito"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                gridDistrito.Columns["idProvincia"].Visible = false;
                gridDistrito.Columns["eliminado"].Visible = false;
                gridDistrito.Columns["PROVINCIA"].Visible = false;
            }
        }
    }
}
